package com.jyxd.web.dao.basic;

import com.jyxd.web.data.basic.VitalSign;
import com.jyxd.web.data.dto.TemperatureMomentDTO;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface VitalSignDao {

    /**
     * 新增一条生命体征表记录
     *
     * @param vitalSign
     * @return boolean
     */
    boolean insert(VitalSign vitalSign);

    /**
     * 根据主键id查询一条生命体征表记录
     *
     * @param id
     * @return VitalSign
     */
    VitalSign queryData(String id);

    /**
     * 更新一条生命体征表记录
     *
     * @param vitalSign
     * @return boolean
     */
    boolean update(VitalSign vitalSign);

    /**
     * 根据条件分页查询生命体征表记录列表
     *
     * @param map
     * @return list
     */
    List<VitalSign> queryList(Map<String, Object> map);

    /**
     * 根据条件分页查询生命体征表记录列表
     *
     * @param map
     * @return list
     */
    List<Map<String, Object>> getListByStartTime(Map<String, Object> map);

    /**
     * 根据条件查询列表总记录数
     *
     * @param map
     * @return
     */
    int queryNum(Map<String, Object> map);

    /**
     * 根据时间和code查询对象
     *
     * @param map
     * @return
     */
    List<VitalSign> queryDataByTimeAndCode(Map<String, Object> map);

    /**
     * 根据时间和病人主键id查询对象列表
     *
     * @param map
     * @return
     */
    List<VitalSign> queryListByTime(Map<String, Object> map);

    /**
     * 护理文书--护理单--生命体征--根据病人主键id 查询生命体征列表
     *
     * @return
     */
    List<Map<String, Object>> getList(Map<String, Object> map);

    /**
     * 根据病人id获取某个时间段生命体征最大值
     *
     * @param map
     * @return
     */
    Map<String, Object> getMaxVitalSign(Map<String, Object> map);

    /**
     * 根据病人id获取某个时间段生命体征最小值
     *
     * @param map
     * @return
     */
    Map<String, Object> getMinVitalSign(Map<String, Object> map);

    /**
     * 根据病人id获取某个时间生命体征值
     *
     * @param map
     * @return
     */
    Map<String, Object> getNowVitalSign(Map<String, Object> map);

    /**
     * 根据病人id获取某个时间人工气道方式
     *
     * @param map
     * @return
     */
    Map<String, Object> getAirWay(Map<String, Object> map);

    List<Map<String, Object>> getListInfo(Map<String, Object> map);

    /**
     * 查询体温单时间点所需要的数据
     * @param map
     * @return
     */
    VitalSign findTemperatureMomentVitalSign(Map<String, Object> map);

    /**
     * 查询体温单时间点所需要的数据
     * @param map
     * @return
     */
    VitalSign findTemperatureNewestVitalSign(Map<String, Object> map);

    /**
     * 获取spo2中最大的数据
     * @param map
     * @return
     */
    int  findTemperatureMomentVitalSignBySPO2(Map<String, Object> map);

    /**
     * 查询体温单优化
     * @param map
     * @return
     */
    List<TemperatureMomentDTO> findTemperatureMomentVitalSignByCode(Map<String, Object> map);
}
